#ifndef WORLD_REGION_H
#define WORLD_REGION_H


#include <map>
#include <string>
#include <vector>


typedef struct
{
	int x;
	int y;
} Position;


class Region
{
public:
	static void                    add(std::shared_ptr<Region> region);
	static std::shared_ptr<Region> get(std::string id);
	static std::shared_ptr<Region> get(unsigned int color);

	std::string id;
	std::string settlementID;
	std::string preferredFactionID;
	std::string rebelsID;

	unsigned int color;

	Position capitalPosition;
	Position portPosition;

	std::vector<std::string> resourceIDs;

	unsigned int baseFarmLevel;

	std::string settlementTypeID;

	unsigned int population;

	std::string founderFactionID;

private:
	static std::map<unsigned int, std::shared_ptr<Region>> colorMap;
	static std::map<std::string, std::shared_ptr<Region>> idMap;
};


#endif